package com.jcx.ldzj.utile;

import com.aspose.pdf.Document;
import net.coobird.thumbnailator.Thumbnails;

public class PDFUtile {
    /**
     * 压缩pdf
     * 需要导入包：
     <dependency>
     <groupId>com.aspose</groupId>
     <artifactId>aspose-pdf</artifactId>
     <version>19.12</version>
     </dependency>
     * @param source 目标文件
     * @param target 所转换后的文件
     */
    public static void optimize(String source, String target) {
        Document doc = new Document(source);
        //设置压缩属性
        Document.OptimizationOptions opt = new Document.OptimizationOptions();
        //删除PDF不必要的对象
        opt.setRemoveUnusedObjects(true);
        //链接重复流
        opt.setLinkDuplcateStreams(false);
        //删除未使用的流
        opt.setRemoveUnusedStreams(false);
        //删除不必要的字体
        opt.setUnembedFonts(true);
        //压缩PDF中的图片
        opt.setCompressImages(true);
        //图片压缩比， 0 到100可选，越低压缩比越大
        opt.setImageQuality(10);
        doc.optimizeResources(opt);
        //优化web的PDF文档
        doc.optimize();
        doc.save(target);
    }
    /**
     * 图像的乘法因子
     */
    public static float FACTOR = 0.5f;



    /**
     * 压缩pdf里面的图片
     * 导入包
     * <dependency>
     *             <groupId>net.coobird</groupId>
     *             <artifactId>thumbnailator</artifactId>
     *             <version>0.4.8</version>
     *         </dependency>
     *         <!-- https://mvnrepository.com/artifact/com.twelvemonkeys.imageio/imageio-tiff -->
     *         <dependency>
     *             <groupId>com.twelvemonkeys.imageio</groupId>
     *             <artifactId>imageio-tiff</artifactId>
     *             <version>3.5</version>
     *         </dependency>
     * @param source
     * @param target
     * @param scale
     * @param imageQuality
     */
    public static void optimizeImage(String source, String target,double scale,double imageQuality) {
        try {
            Thumbnails.of(source) //原图片
                    .scale(scale) //分辨率比例
                    .outputQuality(imageQuality) //图片质量
                    .outputFormat("JPEG") //目标文件格式
                    .toFile(target); //目标图片
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


}
